class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        stack<int> s;
        int pushlen = pushV.size(), poplen = popV.size();
        for(int i = 0, j = 0; i < poplen; ++i){
            while(s.empty() || s.top() != popV[i]){
                if(j < pushlen)
                    s.push(pushV[j++]);
                else
                    return false;
            }
            if(s.top() == popV[i]){ // 按弹出序列元素顺序出栈
                s.pop();
            }
        }
        return s.empty();  // 栈不空说明不是弹出序列，反之为true
    }
};